import random
from datetime import datetime
from django.http import JsonResponse
from django.shortcuts import render
from app01.utils.form import OrderModelForm
from django.views.decorators.csrf import csrf_exempt
from app01 import models
from app01.utils.pagination import Pagination


def order_list(request):
    """订单列表"""
    queryset = models.Order.objects.all().order_by("-oid")
    form = OrderModelForm()
    page_object = Pagination(request, queryset)
    # 参数字典
    context = {
        "queryset": page_object.page_queryset,  # 分完页的数据
        "page_string": page_object.html(),  # 生成的页码
        "form": form,
    }
    return render(request, "order_list.html", context)


@csrf_exempt
def order_add(request):
    """新建订单（Ajax请求）"""
    form = OrderModelForm(data=request.POST)
    if form.is_valid():
        # {'title': ['12123'], 'price': ['-1'], 'status': ['1'], 'admin': ['1']}
        # print(form.cleaned_data)
        # 自动生成随机订单号
        form.instance.oid = datetime.now().strftime("%Y%m%d%H%M%S") + str(random.randint(1000, 9999))
        # 固定订单管理员为当前登录的管理员(去session中获取)
        form.instance.admin_id = request.session["info"]["id"]
        # 保存到数据库
        form.save()
        return JsonResponse({"status": True})

    return JsonResponse({"status": False, "error": form.errors})


def order_delete(request):
    """删除订单"""
    uid = request.GET.get('uid')
    exists = models.Order.objects.filter(id=uid).exists()
    if not exists:
        return JsonResponse({'status': False, 'error': "删除失败，数据不存在。"})
    models.Order.objects.filter(id=uid).delete()
    return JsonResponse({'status': True})


def order_detail(request):
    """根据id获取订单详情"""
    # 方法1
    """
    uid = request.GET.get("uid")
    row_object = models.Order.objects.filter(id=uid).first()
    if not row_object:
        return JsonResponse({"status": False, "error": "数据不存在，"})
    #从数据库中获取一个对象row_object
    result = {
        "status":True,
        "data":{
            "title":row_object.title,
            "price":row_object.price,
            "status":row_object.status,
        }
    }
    return JsonResponse(result)
    """
    # 方法2
    uid = request.GET.get("uid")
    row_dict = models.Order.objects.filter(id=uid).values("title","price","status").first()
    if not row_dict:
        return JsonResponse({'status': False, 'error': "删除失败，数据不存在。"})
    result = {
        "status":True,
        "data":row_dict,
    }
    return JsonResponse(result)


@csrf_exempt
def order_edit(request):
    """编辑订单"""
    uid = request.GET.get("uid")
    row_object = models.Order.objects.filter(id=uid).first()
    if not row_object:
        return JsonResponse({"status":False,"tips":"数据不存在,请刷新重试。"})

    form = OrderModelForm(data=request.POST,instance=row_object)

    if form.is_valid():
        form.save()
        return JsonResponse({"status":True})

    return JsonResponse({'status': False, 'error': form.errors})